17267
10950
Я только новичок в программировании на Swift. Моя идея довольно проста - приложение с двумя кнопками. При нажатии текстовое поле изменит свой текст.
В Main.StoryBoard я добавляю текстовое поле и две кнопки.
В файле ViewController.swift. Я пишу так:
импорт UIKit
class ViewController: UIViewController {
@IBOutlet слабое текстовое поле var: UITextField!
Кнопка слабой переменной @IBOutlet: UIButton!
@IBOutlet weak var button2: UIButton!
@IBAction func action1 (_ отправитель: UIButton) {
textfield.text = "вы только что нажали кнопку button1"
}
@IBAction func action2 (_ отправитель: UIButton) {
textfield.text = "вы только что нажали на button2"
}
}
Предполагается, что все в порядке. Однако появляется ошибка, которая показывает:
thread1: сигнал SIGABRT
в файле AppDelegate.swift строка:
класс AppDelegate: UIResponder, UIApplicationDelegate
Что не так с моим кодом? 
Чтобы решить эту проблему, сначала очистите проект, а затем перестройте его.
Чтобы очистить проект, перейдите в MenuBar: Product -> Clean
Затем, чтобы перестроить проект, просто нажмите кнопку «Выполнить» как обычно.
|
Вы получаете ошибку SIGABRT всякий раз, когда у вас отключена розетка. Щелкните контроллер представления в раскадровке и перейдите к соединениям на боковой панели (символ стрелки). Посмотрите, есть ли у вас там дополнительная розетка, дубликат или лишняя, которая не подключена. Если это не так, возможно, вы неправильно подключили свои розетки к своему коду.
Просто помните, что SIGABRT происходит, когда вы пытаетесь вызвать выход (кнопка, представление, текстовое поле и т. Д.), Которого там нет.
|
Для меня это не выход. Я решил проблему, перейдя к ошибке и прочитав, что там написано. (Также Noob ..)
Это была ошибка:
И решение было здесь:
Просто прокрутите вывод вверх, и ошибка будет обнаружена.
|
Распространенной причиной этого типа ошибки является то, что вы могли изменить имя своего IBOutlet или IBAction, вы можете просто проверить это, перейдя в исходный код.
Щелкните main.storyboard и выберите «Открыть как».
а затем выберите исходный код
исходный код откроется
а затем проверьте, есть ли имя iboutlet или ibaction, которое вы изменили, если есть, выберите часть и удалите ее, а затем снова создайте iboutlet или ibaction.
Это должно решить вашу проблему
|
В моем случае я не получал ошибку, просто сбой в AppDelegate, и мне пришлось снять флажок со следующей опции: OS_ACTIVITY_MODE, тогда я мог бы получить настоящую причину сбоя в моем .xib файле.
Надеюсь, это тоже поможет вам :)
|
У меня такая же проблема. Я сделал кнопку в раскадровке и подключил ее к ViewController, а затем удалил кнопку. Таким образом, соединение все еще было, но кнопки не было, и поэтому я получил ту же ошибку, что и вы.
Исправить:
Перейдите в инспектор соединений (стрелка в правом верхнем углу в раскадровке) и удалите все неиспользуемые соединения.
|
Если вы столкнетесь с этим в Xcode 10, вам придется очистить его перед сборкой. Или переключитесь на устаревшую систему сборки. Файл -> Настройки рабочего пространства ... -> Система сборки: устаревшая система сборки.
|
В моем случае журнала вообще не было.
Моя ошибка заключалась в том, чтобы поместить контроллер представления в стек навигации, который уже был частью стека навигации.
|
Иногда это также происходит, когда функцию необходимо выполнить только в основном потоке, поэтому вы можете исправить это, назначив ее основному потоку следующим образом: -
DispatchQueue.main.async {
ваш код здесь
}
|
Для меня эта ошибка была связана с тем, что у меня был шаг подготовки перехода, который не был применим к выполняемому переходу.
длинная история:
override func prepare (для перехода: UIStoryboardSegue, отправитель: Any?) {
пусть gosetup = segue.destination as! Обновить
gosetup.wherefrom = updatestring
}
Это делалось со всеми сегментами, когда это было только для одного. Итак, я создаю логическое значение и помещаю в него gosetup.
|
Это очень распространенная ошибка, которая может произойти по нескольким причинам. Чаще всего это происходит, когда IBOUTLET / IBACTION, подключенный к контроллеру представления в раскадровке, удаляется из файла swift, но не из раскадровки. Если это не так, используйте журнал на нижней панели инструментов, чтобы выяснить, в чем заключается ошибка, и диагностировать ее. Вы можете использовать точки останова и отладку, чтобы помочь вам найти ошибку.
Чтобы узнать, как исправить ошибку, воспользуйтесь статьей, которую я нашел в Google: https://rayaans.com/fixing-the-notorious-sigabrt-error-in-xcode
|
В моем случае я использовал RxSwift для выполнения поиска.
Я постоянно использовал общий экземпляр определенного класса внутри метода onNext, что, вероятно, сделало его недоступным (Mutex).
Будьте осторожны с такими случаями только в случае крайней необходимости.
В моем случае я заранее использовал пару переменных, чтобы безопасно (и последовательно) сохранить возвращаемые значения методов общего экземпляра, и повторно использовал их внутри блока onNext.
|
У меня такая же проблема. В моем случае я просто перезаписал файл
GoogleService-Info.plist
на этом пути:
Платформа \ ios \ YOUR_APP_NAME \ Resources \ Resources
В моем случае файлы присутствовали без данных.
|
Весьма активный вопрос. Заработайте 10 репутации, чтобы ответить на этот вопрос. Требование репутации помогает защитить этот вопрос от спама и случаев отсутствия ответов.
Не тот ответ, который вы ищете? Посмотрите другие вопросы с метками ios swift или задайте свой вопрос.